package com.kuang.springcloud.controller;

import com.kuang.springcloud.pojo.Dept;
import com.kuang.springcloud.service.DeptService;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//提供restful服务
@RestController
public class DeptController {

  @Autowired
  DeptService deptService;


  @HystrixCommand(fallbackMethod = "hystrixGet")  //这个注解的意思：我失败，就去调用备用的方法
  @GetMapping("/dept/get/{id}")
  public Dept get(@PathVariable("id") Long id){

      Dept dept = deptService.queryById(id);

      if(dept ==null){
          throw new RuntimeException("这个异常：id==》"+id+"不存在该用户");
      }

      return dept;
  }


  //但我们想让触发异常时，走其他的服务器  （备选方案）
//熔断
  public Dept hystrixGet(@PathVariable("id") Long id){

      return new Dept().setDeptno(id).setDname("这个异常：id==》"+id+"不存在该用户").setDb_source("没有这个数据库的信息");
  }


}
